#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time   : 2020-3-17 20:30
# Author : Yunlian Zeng

class Cal:
    def add(self, a, b):
        return a + b

    def sub(self, a, b):
        return a - b

    def mul(self, a, b):
        return a * b

    def div(self, a, b):
        return a / b


import unittest


class TestCal(unittest.TestCase):
    # #setUp: 每个测试方法运行前运行，测试前的初始化工作。
    # #tearDown: 每个测试方法运行结束后运行，测试后的清理工作
    # def setUp(self) -> None:
    #     print('环境初始化')
    #
    # def tearDown(self) -> None:
    #     print('环境清理')

    # setUP/tearDown, 和setUpClass/tearDownClass可以自由配对
    # setUpClass: 所有的测试方法运行前运行，为单元测试做前期准备，但必须使用@classmethod装饰器进行修饰
    # tearDownClass: 所有的测试方法运行结束后运行，为单元测试做后期清理工作，但必须使用@classmethod装饰器进行修饰
    @classmethod
    def setUpClass(cls) -> None:
        cls.cal = Cal()
        print('初始化')

    @classmethod
    def tearDownClass(cls) -> None:
        print('销毁数据')

    # 1.unittest框架的测试用例, 是以test开始的方法
    def test_add01(self):
        # cal = Cal()
        result = self.cal.add(1, 1)
        self.assertEqual(result, 2)

    # 2. 如果只想运行当前的测试用例,使用鼠标,放在测试用例的区域内, 右键-Run XXXX
    def test_add02(self):
        # cal = Cal()
        result = self.cal.add(1.123, 3.1415)
        self.assertEqual(result, 4.2645)

    def test_add03(self):
        # cal = Cal()
        result = self.cal.add(6, -1)
        self.assertEqual(result, 5)

    def test_add04(self):
        print('test case 04')


if __name__ == '__main__':
    # main方法会去搜集以test开始的所以的方法, 做为测试用例来执行
    unittest.main()
